package org.aeon.gamechatnest.mapper;

import org.aeon.gamechatnest.pojo.Role;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * @author 89342
 * @description 针对表【role(角色表)】的数据库操作Mapper
 * @createDate 2024-05-09 09:25:50
 * @Entity org.aeon.gamechatnest.pojo.Role
 */
@Mapper
public interface RoleMapper {

    /**
     * 添加角色
     * TODO 批量添加
     * @param role
     * @return
     */
    int add(Role role);


    /**
     * 更新角色
     *
     * @param role
     * @return
     */
    @Update("UPDATE role SET role_name = #{roleName} WHERE role_id = #{roleId}")
    int update(Role role);

    /**
     * 根据用户id和服务器id查询角色
     *
     * @param userId
     * @param serverId
     */
    List<Role> getByUserIdAndServerId(@Param("userId") Long userId, @Param("serverId") Long serverId);

    /**
     * 根据服务器id查询角色id
     *
     * @param serverId
     * @return
     */
    List<Long> getRoleIdsByServerId(@Param("serverId") Long serverId);

    /**
     * 根据角色id批量删除角色
     *
     * @param roleIds
     */
    int deleteByIds(@Param("roleIds") List<Long> roleIds);

    /**
     * 根据服务器id查询角色
     *
     * @param serverId
     * @return
     */
    @Select("SELECT role_id, server_id, role_name, create_time FROM role WHERE server_id = #{serverId}")
    List<Role> getByServerId(@Param("serverId") Long serverId);

    /**
     * 根据角色id查询角色存在
     *
     * @param roleId
     * @return
     */
    @Select("SELECT COUNT(role_id) FROM role WHERE role_id = #{roleId}")
    boolean isExist(Long roleId);

    /**
     * 根据角色id查询角色
     *
     * @param roleId
     * @return
     */
    @Select("SELECT server_id FROM role WHERE role_id = #{roleId}")
    Long getServerIdById(Long roleId);


}




